package org.yang.common.core.annotation;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import org.yang.common.core.annotation.validation.ChineseValidation;
import org.yang.common.i18n.constant.I18nMessageConstant;

import java.lang.annotation.*;

/**
 * 中文校验
 *
 * @author: lslands
 * @version: 1.0
 * @create: 2024/5/19
 * @description:
 */

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {ChineseValidation.class})
public @interface Chinese {

    /**
     * 是否 强校验
     * @return boolean
     */
    boolean required() default true;

    /**
     * 校验不通过返回信息
     * @return String
     */
    String message() default I18nMessageConstant.VALIDATION_CHINESE;

    /**
     * 所属分组,即在有分组的情况下，只校验所在分组参数
     * @return Class<?>[]
     */
    Class<?>[] groups() default {};

    /**
     * 主要是针对bean，很少使用
     *
     * @return 负载
     */
    Class<? extends Payload>[] payload() default {};
}
